/****************************************************************************
 **
 ** Trolltech hereby grants a license to use the Qt/Eclipse Integration
 ** plug-in (the software contained herein), in binary form, solely for the
 ** purpose of creating code to be used with Trolltech's Qt software.
 **
 ** Qt Designer is licensed under the terms of the GNU General Public
 ** License versions 2.0 and 3.0 ("GPL License"). Trolltech offers users the
 ** right to use certain no GPL licensed software under the terms of its GPL
 ** Exception version 1.2 (http://trolltech.com/products/qt/gplexception).
 **
 ** THIS SOFTWARE IS PROVIDED BY TROLLTECH AND ITS CONTRIBUTORS (IF ANY) "AS
 ** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 ** TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 ** PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 ** OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 ** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 ** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 ** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 ** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 ** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
 **
 ** Since we now have the GPL exception I think that the "special exception
 ** is no longer needed. The license text proposed above (other than the
 ** special exception portion of it) is the BSD license and we have added
 ** the BSD license as a permissible license under the exception.
 **
 ****************************************************************************/

#ifndef MIRROR_H
#define MIRROR_H

#include <QtGui/QWidget>
#include "ui_Mirror.h"
#include <qcamera.h>
#include <qvideowidget.h>
#include <QtGui>

QTM_USE_NAMESPACE

class QAboutSplashScreen: public QSplashScreen
{

Q_OBJECT
public:
    QAboutSplashScreen(QWidget *parent, const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = 0) :
        QSplashScreen(parent, pixmap, f)
    {

    }

signals:
    void exitAbout();

private:
    void mousePressEvent(QMouseEvent * /*event*/)
    {
        emit exitAbout();
    }

};

class QMyVideoWidget: public QVideoWidget
{
public:
    QMyVideoWidget(QWidget* parent = 0) :
        QVideoWidget(parent)
    {
        QString privatePathQt(QDir::currentPath());
        QString privatePathSymbian(QDir::toNativeSeparators(privatePathQt));
        privatePathSymbian.append( "\\bg.PNG" );
        pixmap = new QPixmap(privatePathSymbian);
    }
    void paintEvent(QPaintEvent* evt)
    {
        QVideoWidget::paintEvent( evt );
        QPainter painter(this);

        if (!pixmap->isNull()) {
            painter.drawPixmap(QPoint(0, 0), *pixmap);
        }
    }
private:
    QPixmap *pixmap;
};

class Mirror: public QWidget
{
Q_OBJECT

public:
    Mirror(QWidget *parent = 0);
    ~Mirror();
private:
//    void setupBackground();
    void setupCamera();
    void setupAbout();
    void setupVideo();
    void setupSettings();
    

public slots:
    void changeBackground(QListWidgetItem* item);
    void changeBackgroundAndReturn(QListWidgetItem* item);
    void showAbout(bool show = false);
    void showSettings(bool show = false);
    void error(QCamera::Error);

private:
    Ui::Mirror ui;
    QCamera* camera;
    QVideoWidget* videoWidget;
    QAboutSplashScreen* about;
};

#endif // MIRROR_H
